Übernehmen von Parametern aus der Konsole

Hier möchte ich zusammentragen, wie die übernahme von Parametern in der Konsole in verschiedenen Programmiersprachen funktioniert.

Perl

Perl hat ein Motto, dem es Folgt. Dieses besagt, dass mann alles immer auf mehr als nur einen Weg bewerkstelligen kann. Deshalb möchte ich auch hier verschiedenen Möglichkeiten der Parameterübernahme presentieren.

Optionen mittels Perl in einen Hash befördern

Als erstes habe ich ein Script geschrieben, dass sämmtliche Parameter durchgeht, Option und Wert gruppiert und dann an ein Hash mit Optionsnamen als Schlüssel und dessen Wert als den übergebenen Wert bzw. den Wert 1, wenn die Option für sich allein steht.

#!/usr/bin/perl -w

my @pamList;
my %options;
# Parameter und Werte zuordnen
while (my $word = shift @ARGV){
	#print "word>$word<\n";
	if ($word=~ /^-[^-]/){ #beginnt mit einem Bindestrich also ShortParameter
		my @gPam=split(/=/,$word);
		my $l_gPam = length($gPam[0]);
		if ($l_gPam >2){ # wenn mehr als nur ein Zeichen hinter dem Minus
			push @pamList ,substr($gPam[0],1,1);
			for ($i=2;$i<$l_gPam;$i++){
				my $addPam=substr($gPam[0],$i,1);
				push @pamList , $addPam;
			}
		}else{
			#print ">$gPam[0]<\n";
			push @pamList, $gPam[0];
		}
		$pamList[-1].=" $gPam[1]" if($gPam[1]);
	}elsif ($word=~ /^-{2,}/){# beginnt mit mindestens 2 Bindestrichen also LongParameter
		push @pamList, $word;
	}elsif($word eq '-'){ # hier ist zwischen dem Bindestrich und dem Parameternamen ein Leerzeichen gerutscht
			push @pamList, $word;
	}	elsif(@pamList){ # gehört zum letzten Parameter
		$pamList[-1].=" $word";
	} else{ # ist ein Wert als Parameter
		push @pamList, $word;
	}
}
foreach my $eintrag(@pamList){
	#print "Eintrag>$eintrag<\n";
	$eintrag=~s/^-{1,2}\s?//; # löschen aller -Zeichen und eventuell folgender Leerzeichen
	$eintrag=~s/\s/=/;#ersetzen des ersten verbleibenden Leerzeichens durch ein =-Zeichen
	my @setValue=split(/=/,$eintrag); # Splitten am gerade gestezten Gleichheitszeichen
	$options{$setValue[0]}=$setValue[1] || !defined $setValue[1]; # und den ersten Wert als Schlüssel den zweiten bzw. wenn nicht vorhanden 1 als Wert übergeben
}
#den kompletten Hash ausgeben
while ( my ($option, $value) = each(%options) ) {
		print "$option => $value\n";
}
	

nach oben